#pragma warning(disable:4996)
#pragma warning(disable:6031)

#include <stdio.h>
#include <stdlib.h>

//int search(int* nums, int numsLen, int target) {
//    // write code here
//    int left = 0;
//    int right = numsLen - 1;
//    while (left <= right)
//    {
//        int mid = (left + right) / 2;
//        if (nums[mid] == target)
//        {
//            return mid;
//        }
//        else if (nums[mid] < target)
//        {
//            left = mid + 1;
//        }
//        else {
//            right = mid - 1;
//        }
//    }
//    return -1;
//}

//typedef struct ListNode
//{
//	int n;
//	struct LIstNode* next;
//}ListNode;
//
//ListNode* reverseBetween(struct ListNode* head, int m, int n) {
//    // write code here
//    if (head->next == NULL)
//    {
//        return head;
//    }
//    ListNode* p2 = head;
//    while (--m)
//    {
//        p2 = p2->next;
//    }
//    //printf("%d\n",p2->val);
//    ListNode* p1 = head;
//    while (n--)
//    {
//        p1 = p1->next;
//    }
//    //printf("%d\n",p1->val);
//    ListNode* p3 = p2->next;
//    int t = n - m;
//    while (t--)
//    {
//        p2->next = p1;
//        p1 = p2;
//        p2 = p3;
//        p3 = p3->next;
//    }
//    p2->next = p1;
//    head->next = p2;
//    return head;
//}
//
//int main()
//{
//	ListNode* n1 = (ListNode*)malloc(sizeof(ListNode));
//	n1->n = 1;
//	ListNode* n2 = (ListNode*)malloc(sizeof(ListNode));
//	n1->n = 2;
//	ListNode* n3 = (ListNode*)malloc(sizeof(ListNode));
//	n1->n = 3;
//	ListNode* n4 = (ListNode*)malloc(sizeof(ListNode));
//	n1->n = 4;
//	ListNode* n5 = (ListNode*)malloc(sizeof(ListNode));
//	n1->n = 5;
//	n1->next = n2;
//	n2->next = n3;
//	n3->next = n4;
//	n4->next = n5;
//	n5->next = NULL;
//    n1 = reverseBetween(n1, 2, 4);
//	return 0;
//}